1. Field of the Invention
The present invention relates to computing. More particularly, the present invention relates to the migration of web application scripts to remote computing devices.
2. Description of the Related Art
A web application, or webapp, is an application that is accessed via a web browser over a network (e.g. Internet, mobile phone network, etc.). A web application can also be a computer software application that is coded in a browser-supported language (such as HTML, CSS, JavaScript, Java, PHP, etc.) and reliant on a common web browser to render the application executable.
Web application code is typically stored on servers. At launch, the browser uses a web address such as a Uniform Resource Locator (URL) to fetch the web application code. The code is then downloaded to the device and the application is executed, either inside the browser or using the browser functionality. Over the course of execution, additional code can be downloaded and executed. The client device may also store the web application code locally, in which case the web application URL points to a local file. It is also possible that the web application is preloaded on the client device prior to delivery of the client device to a user. This is common with, for example, preloaded applications on cell phones or laptop computers.
Runtime interpretation of script code can slow down execution of web applications, relative to the execution speed of native applications. Specifically, most web applications are programmed using a scripting language (e.g., JavaScript) and such scripting languages need to be interpreted at runtime. Contrast this with common native applications, which compile their code prior to launch and thus do not require processor-intensive runtime interpretation. As a result, web applications are inherently slower than native applications. However, since scripting languages are interpreted at runtime, they provide interoperability between platforms. For example, a JavaScript code can run on any platform where a JavaScript engine is present. User interfaces written in HTML and CSS provide similar benefits and drawbacks.
Consumers increasingly expect mobile devices to deliver performances similar to more powerful devices, such as desktops. However, the drawbacks of web application scripts are actually intensified on mobile devices, which commonly have processors that are much less powerful than their desktop device counterparts. While the processing power of a desktop computer may be enough to give the user the impression that a web application is not much slower than a native application, such an experience is not mirrored on a mobile device, especially mobile devices having very limited processing power and memory space, such as cellular phones.
Nevertheless, more and more web applications are being developed for mobile devices, and the complexity of the web applications is also increasing. This is due to the ease of authoring, distribution, and maintenance of web applications and the platform independence and portability of such applications. Of course, the increasing profitability of web application development for mobile devices has played a huge role as well. The success of mobile device web application distribution portals such as iTunes from Apple, Inc., Android Market from Google, Inc., and Palm's Application Catalog has greatly increased the amount of revenues that can be generated from web application distribution.
Furthermore, the type of web applications developed has also expanded, so that they are not just limited to web pages anymore. Widgets, offline applications, games, and productivity software are examples of increasingly common types of web applications.
The capabilities of web applications are also growing. Ajax (short for asynchronous JavaScript+XML) allows web applications to retrieve data from a server asynchronously, in the background, without interfering with the display and behavior of the existing page. The use of Ajax techniques has led to an increase in interactive or dynamic interfaces. Other techniques such as worker threads and canvas scripting have increased the complexity of web applications.
Of course, the increase in web application complexity only multiplies the slower processing issues of web application scripts, especially when run on lesser-powered processors on mobile devices.